package com.zjj.learn.algorithmPlus.segment1.binarySearch;

/**
 * @author zjj_admin
 */
public class LeetCodeTopic {


    /**
     * https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/
     * 34. 在排序数组中查找元素的第一个和最后一个位置
     * 中等
     * 2.3K
     * 相关企业
     * 给你一个按照非递减顺序排列的整数数组 nums，和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。
     * <p>
     * 如果数组中不存在目标值 target，返回 [-1, -1]。
     * <p>
     * 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。
     * <p>
     * <p>
     * <p>
     * 示例 1：
     * <p>
     * 输入：nums = [5,7,7,8,8,10], target = 8
     * 输出：[3,4]
     * 示例 2：
     * <p>
     * 输入：nums = [5,7,7,8,8,10], target = 6
     * 输出：[-1,-1]
     * 示例 3：
     * <p>
     * 输入：nums = [], target = 0
     * 输出：[-1,-1]
     * <p>
     * <p>
     * <p>
     * 实现思路：
     * 本题目就是求某一个数据的 leftmost 和 rightmost
     *
     * @param nums   非递减数组
     * @param target
     * @return
     */
    public int[] leetCode34(int[] nums, int target) {
        int l = BinarySearch.binarySearchLeftmost1(nums, target);
        int[] res = new int[]{-1, -1};
        if (l == -1) {
            return new int[]{-1, -1};
        } else {
            return new int[]{l, BinarySearch.binarySearchRightmost1(nums, target)};
        }
    }

}

